如何计算Pandas列中特定值的出现次数 |
您所在的位置:网站首页 › 统计元素出现次数 python › 如何计算Pandas列中特定值的出现次数 |
如何计算Pandas列中特定值的出现次数
在这篇文章中,我们将讨论如何在pandas列中计算一个特定列值的出现次数。 使用中的数据集。我们可以通过使用value_counts()方法进行计数。这个函数用来计算整个数据框架中存在的数值,也可以计算某一列的数值。 语法 : data['column_name'].value_counts()[value]其中, data是输入数据帧 value是指要计算的列中存在的字符串/整数值 column_name是数据框架中的列。例子 :要计算一个特定值的出现次数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # count values in name column print(data['name'].value_counts()['sravan']) # count values in subjects column print(data['subjects'].value_counts()['php']) # count values in marks column print(data['marks'].value_counts()[89])输出: 3 2 1如果我们想计算某一列的所有数值,那么我们就不需要提到这个数值。 语法 : data['column_name'].value_counts()例子:要计算一个值在某一列中的出现次数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # count all values in name column print(data['name'].value_counts()) # count all values in subjects column print(data['subjects'].value_counts()) # count all values in marks column print(data['marks'].value_counts()) # count all values in age column print(data['age'].value_counts())输出: 如果我们想按顺序获得结果(如升序和降序),我们必须指定参数 语法: 升序: data[‘column_name’].value_counts(ascending=True) 降序: data[‘column_name’].value_counts(ascending=False) 例子:要以一种有序的方式获得结果 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # count all values in name column in ascending order print(data['name'].value_counts(ascending=True)) # count all values in subjects column in ascending order print(data['subjects'].value_counts(ascending=True)) # count all values in marks column in descending order print(data['marks'].value_counts(ascending=False)) # count all values in age column in descending order print(data['age'].value_counts(ascending=False))输出: 处理缺失值的问题这里我们可以计算有无NA值的出现。通过使用dropna参数,如果设置为True,则包括NA值,如果设置为False,则不计算NA。 语法 : 包括 NA 值: data[‘column_name’].value_counts(dropna=True) 不包括NA 值: data[‘column_name’].value_counts(dropna=False) 例子:处理缺失值的问题 # import pandas module import pandas as pd #import numpy import numpy # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi', numpy.nan], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R', numpy.nan], 'marks': [98, 90, 78, 91, 87, 78, 89, 90, numpy.nan], 'age': [11, 23, 23, 21, 21, 21, 23, 21, numpy.nan] }) # count all values in name column including NA print(data['name'].value_counts(dropna=False)) # count all values in subjects column including NA print(data['subjects'].value_counts(dropna=False)) # count all values in marks column excluding NA print(data['marks'].value_counts(dropna=False)) # count all values in age column excluding NA print(data['age'].value_counts(dropna=True))输出: 具有相对频率的计数值我们要添加normalize参数来获得重复数据的相对频率。它被设置为True。 语法: data[‘column_name’].value_counts(normalize=True)例子:具有相对频率的计数值 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # count all values in name with relative frequencies print(data['name'].value_counts(normalize=True))输出: sravan 0.375 ojaswi 0.125 ojsawi 0.125 bobby 0.125 rohith 0.125 gnanesh 0.125 Name: name, dtype: float64 获取详细信息如果我们想获得计数、平均值、标准差、最小值、25%、50%、75%、最大值等详细信息,那么我们必须使用describe()方法。 语法 : data['column_name'].describe()示例:获得详细信息 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # get about age print(data['age'].describe())输出: count 8.000000 mean 20.500000 std 3.964125 min 11.000000 25% 21.000000 50% 21.000000 75% 23.000000 max 23.000000 Name: age, dtype: float64 使用size()和groupby()在这里,这将返回某一列中所有出现的计数。 语法 : data.groupby('column_name').size()例子 :对某一列中所有出现的情况进行计数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # get the size of name print(data.groupby('name').size())输出: name bobby 1 gnanesh 1 ojaswi 1 ojsawi 1 rohith 1 sravan 3 dtype: int64 使用count()和groupby()在这里,这将返回所有列中某一列的所有出现的计数。 语法 : data.groupby('column_name').count()例子 :对某一列中所有出现的情况进行计数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # get the count of name across all columns print(data.groupby('name').count())输出: 使用 bins如果我们想得到某个特定范围内的计数,那么就应用bins参数。我们可以指定范围(bins)的数量。 语法: (data['column_name'].value_counts(bins)其中, data是输入数据帧 column_name是要得到的列。 bins是指要指定的分选区总数例子:在特定的数值范围内获取计数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'ojsawi', 'bobby', 'rohith', 'gnanesh', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'php', 'java', 'html/css', 'python', 'R'], 'marks': [98, 90, 78, 91, 87, 78, 89, 90], 'age': [11, 23, 23, 21, 21, 21, 23, 21] }) # get count of age column with 6 bins print(data['age'].value_counts(bins=6)) # get count of age column with 4 bins print(data['age'].value_counts(bins=4))输出: (19.0, 21.0] 4 (21.0, 23.0] 3 (10.987, 13.0] 1 (17.0, 19.0] 0 (15.0, 17.0] 0 (13.0, 15.0] 0 Name: age, dtype: int64 (20.0, 23.0] 7 (10.987, 14.0] 1 (17.0, 20.0] 0 (14.0, 17.0] 0 Name: age, dtype: int64 使用 apply()如果我们想获得所有列的计数,那么我们必须使用apply()函数。在此,我们将使用value_counts()方法。 语法: data.apply(pd.value_counts)例子:获得所有列的计数,跨所有列的计数 # import pandas module import pandas as pd # create a dataframe # with 5 rows and 4 columns data = pd.DataFrame({ 'name': ['sravan', 'bobby', 'sravan', 'sravan', 'ojaswi'], 'subjects': ['java', 'php', 'java', 'html/css', 'python'], 'marks': [98, 90, 78, 91, 87], 'age': [11, 23, 23, 21, 21] }) # get all count data.apply(pd.value_counts)输出: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |